#include "BulletDynamics/Featherstone/btMultiBodyLink.h"
#ifdef __cplusplus
extern "C" {
#endif
btMultibodyLink* bullet_NewbtMultibodyLink(){
	btMultibodyLink* wrap_out = new btMultibodyLink();
	return wrap_out;
}

btVector3* bullet_btMultibodyLink_getAxisBottom(btMultibodyLink* c_this,int dof){
	int c_arg_dof=dof;
	btVector3 const& c_out = c_this->getAxisBottom(c_arg_dof);
	btVector3* wrap_out = (btVector3*)(&c_out);
	return wrap_out;
}

btVector3* bullet_btMultibodyLink_getAxisTop(btMultibodyLink* c_this,int dof){
	int c_arg_dof=dof;
	btVector3 const& c_out = c_this->getAxisTop(c_arg_dof);
	btVector3* wrap_out = (btVector3*)(&c_out);
	return wrap_out;
}

btSpatialMotionVector* bullet_btMultibodyLink_GetFieldOfM_absFrameLocVelocity(btMultibodyLink* c_this){
	return (btSpatialMotionVector*)(&c_this->m_absFrameLocVelocity);
}

btSpatialMotionVector* bullet_btMultibodyLink_GetFieldOfM_absFrameTotVelocity(btMultibodyLink* c_this){
	return (btSpatialMotionVector*)(&c_this->m_absFrameTotVelocity);
}

btVector3* bullet_btMultibodyLink_GetFieldOfM_appliedConstraintForce(btMultibodyLink* c_this){
	return (btVector3*)(&c_this->m_appliedConstraintForce);
}

btVector3* bullet_btMultibodyLink_GetFieldOfM_appliedConstraintTorque(btMultibodyLink* c_this){
	return (btVector3*)(&c_this->m_appliedConstraintTorque);
}

btVector3* bullet_btMultibodyLink_GetFieldOfM_appliedForce(btMultibodyLink* c_this){
	return (btVector3*)(&c_this->m_appliedForce);
}

btVector3* bullet_btMultibodyLink_GetFieldOfM_appliedTorque(btMultibodyLink* c_this){
	return (btVector3*)(&c_this->m_appliedTorque);
}

btSpatialMotionVector** bullet_btMultibodyLink_GetFieldOfM_axes(btMultibodyLink* c_this){
	return (btSpatialMotionVector**)(&c_this->m_axes);
}

btQuaternion* bullet_btMultibodyLink_GetFieldOfM_cachedRotParentToThis(btMultibodyLink* c_this){
	return (btQuaternion*)(&c_this->m_cachedRotParentToThis);
}

btQuaternion* bullet_btMultibodyLink_GetFieldOfM_cachedRotParentToThis_interpolate(btMultibodyLink* c_this){
	return (btQuaternion*)(&c_this->m_cachedRotParentToThis_interpolate);
}

btVector3* bullet_btMultibodyLink_GetFieldOfM_cachedRVector(btMultibodyLink* c_this){
	return (btVector3*)(&c_this->m_cachedRVector);
}

btVector3* bullet_btMultibodyLink_GetFieldOfM_cachedRVector_interpolate(btMultibodyLink* c_this){
	return (btVector3*)(&c_this->m_cachedRVector_interpolate);
}

btTransform* bullet_btMultibodyLink_GetFieldOfM_cachedWorldTransform(btMultibodyLink* c_this){
	return (btTransform*)(&c_this->m_cachedWorldTransform);
}

int bullet_btMultibodyLink_GetFieldOfM_cfgOffset(btMultibodyLink* c_this){
	return (int)(c_this->m_cfgOffset);
}

int bullet_btMultibodyLink_GetFieldOfM_dofCount(btMultibodyLink* c_this){
	return (int)(c_this->m_dofCount);
}

int bullet_btMultibodyLink_GetFieldOfM_dofOffset(btMultibodyLink* c_this){
	return (int)(c_this->m_dofOffset);
}

btVector3* bullet_btMultibodyLink_GetFieldOfM_dVector(btMultibodyLink* c_this){
	return (btVector3*)(&c_this->m_dVector);
}

btVector3* bullet_btMultibodyLink_GetFieldOfM_eVector(btMultibodyLink* c_this){
	return (btVector3*)(&c_this->m_eVector);
}

int bullet_btMultibodyLink_GetFieldOfM_flags(btMultibodyLink* c_this){
	return (int)(c_this->m_flags);
}

btVector3* bullet_btMultibodyLink_GetFieldOfM_inertiaLocal(btMultibodyLink* c_this){
	return (btVector3*)(&c_this->m_inertiaLocal);
}

double bullet_btMultibodyLink_GetFieldOfM_jointDamping(btMultibodyLink* c_this){
	return (double)(c_this->m_jointDamping);
}

double bullet_btMultibodyLink_GetFieldOfM_jointFriction(btMultibodyLink* c_this){
	return (double)(c_this->m_jointFriction);
}

double bullet_btMultibodyLink_GetFieldOfM_jointLowerLimit(btMultibodyLink* c_this){
	return (double)(c_this->m_jointLowerLimit);
}

double bullet_btMultibodyLink_GetFieldOfM_jointMaxForce(btMultibodyLink* c_this){
	return (double)(c_this->m_jointMaxForce);
}

double bullet_btMultibodyLink_GetFieldOfM_jointMaxVelocity(btMultibodyLink* c_this){
	return (double)(c_this->m_jointMaxVelocity);
}

char** bullet_btMultibodyLink_GetFieldOfM_jointName(btMultibodyLink* c_this){
	return (char**)(&c_this->m_jointName);
}

double** bullet_btMultibodyLink_GetFieldOfM_jointPos(btMultibodyLink* c_this){
	return (double**)(&c_this->m_jointPos);
}

double** bullet_btMultibodyLink_GetFieldOfM_jointPos_interpolate(btMultibodyLink* c_this){
	return (double**)(&c_this->m_jointPos_interpolate);
}

double** bullet_btMultibodyLink_GetFieldOfM_jointTorque(btMultibodyLink* c_this){
	return (double**)(&c_this->m_jointTorque);
}

btMultibodyLink::eFeatherstoneJointType bullet_btMultibodyLink_GetFieldOfM_jointType(btMultibodyLink* c_this){
	return (btMultibodyLink::eFeatherstoneJointType)(c_this->m_jointType);
}

double bullet_btMultibodyLink_GetFieldOfM_jointUpperLimit(btMultibodyLink* c_this){
	return (double)(c_this->m_jointUpperLimit);
}

char** bullet_btMultibodyLink_GetFieldOfM_linkName(btMultibodyLink* c_this){
	return (char**)(&c_this->m_linkName);
}

double bullet_btMultibodyLink_GetFieldOfM_mass(btMultibodyLink* c_this){
	return (double)(c_this->m_mass);
}

int bullet_btMultibodyLink_GetFieldOfM_parent(btMultibodyLink* c_this){
	return (int)(c_this->m_parent);
}

int bullet_btMultibodyLink_GetFieldOfM_posVarCount(btMultibodyLink* c_this){
	return (int)(c_this->m_posVarCount);
}

void** bullet_btMultibodyLink_GetFieldOfM_userPtr(btMultibodyLink* c_this){
	return (void**)(&c_this->m_userPtr);
}

btQuaternion* bullet_btMultibodyLink_GetFieldOfM_zeroRotParentToThis(btMultibodyLink* c_this){
	return (btQuaternion*)(&c_this->m_zeroRotParentToThis);
}

void bullet_btMultibodyLink_setAxisBottom(btMultibodyLink* c_this,int dof,btVector3* axis){
	int c_arg_dof=dof;
	btVector3 const& c_arg_axis=(btVector3 const&)(*axis);
	c_this->setAxisBottom(c_arg_dof,c_arg_axis);
}

void bullet_btMultibodyLink_setAxisBottom1(btMultibodyLink* c_this,int dof,double* x,double* y,double* z){
	int c_arg_dof=dof;
	btScalar const& c_arg_x=(btScalar const&)(*x);
	btScalar const& c_arg_y=(btScalar const&)(*y);
	btScalar const& c_arg_z=(btScalar const&)(*z);
	c_this->setAxisBottom(c_arg_dof,c_arg_x,c_arg_y,c_arg_z);
}

void bullet_btMultibodyLink_setAxisTop(btMultibodyLink* c_this,int dof,btVector3* axis){
	int c_arg_dof=dof;
	btVector3 const& c_arg_axis=(btVector3 const&)(*axis);
	c_this->setAxisTop(c_arg_dof,c_arg_axis);
}

void bullet_btMultibodyLink_setAxisTop1(btMultibodyLink* c_this,int dof,double* x,double* y,double* z){
	int c_arg_dof=dof;
	btScalar const& c_arg_x=(btScalar const&)(*x);
	btScalar const& c_arg_y=(btScalar const&)(*y);
	btScalar const& c_arg_z=(btScalar const&)(*z);
	c_this->setAxisTop(c_arg_dof,c_arg_x,c_arg_y,c_arg_z);
}

void bullet_btMultibodyLink_updateCacheMultiDof(btMultibodyLink* c_this,double* pq){
	btScalar * c_arg_pq=(btScalar *)(void*)(pq);
	c_this->updateCacheMultiDof(c_arg_pq);
}

void bullet_btMultibodyLink_updateInterpolationCacheMultiDof(btMultibodyLink* c_this){
	c_this->updateInterpolationCacheMultiDof();
}

#ifdef __cplusplus
}
#endif
